﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Ivy.SiteAdmin.Entity;

namespace Ivy.SiteAdmin.IBusinessLogic
{
    public interface ISiteAdminContentManagementBus
    {
        ///// <ContentTypeMaster>
        ///// 
        ///// </ContentTypeMaster>
        ///// <param name="ContentTypeMasterEntity"></param>
        ///// <returns></returns>
        bool AddContentType(ContentTypeMaster ContentTypeMasterEntity);
        ContentTypeMaster GetSelectedContentTypeByKey(int ContentTypeKey);
        //ContentTypeMaster GetSelectedContentTypeByCode(string ContentTypeCode);
        List<ContentTypeMaster> GetSelectedContentTypeByName(string ContentTypeName);
        int GetContentTypeKeyByContentTypeCode(string ContentTypeCode);

        /// <ContentMetaDataMaster>
        /// 
        /// </ContentMetaDataMaster>
        /// <param name="ContentMetaDataMasterEntity"></param>
        /// <returns></returns>
        bool AddContentMetaData(ContentMetaDataMaster ContentMetaDataMasterEntity);
        bool UpdateContentMetaData(ContentMetaDataMaster ContentMetaDataMasterEntity);
        bool DeleteContentMetaData(ContentMetaDataMaster ContentMetaDataMasterEntity);
        ContentMetaDataMaster GetContentSummryByContentKey(int ContentKey);
        List<ContentMetaDataMaster> GeAllContentMetaDataByContentTypeKey(int ContentTypeKey);
        int SaveContentLikes(int ContentKey);

        ContentMetaDataMaster GetSelectedContentMetaDataByContentCode(string ContentCode);
        ContentMetaDataMaster GetSelectedContentMetaDataByContentName(string ContentName);

        ///// <ContentFeedback>
        ///// 
        ///// </ContentFeedback>
        ///// <param name="ContentFeedbackEntity"></param>
        ///// <returns></returns>
        bool RegisterNewContentFeedback(ContentFeedback ContentFeedbackEntity);
        bool UpdateRegisterdContentFeedback(ContentFeedback ContentFeedbackEntity);
        //ContentFeedback GetAllByContentFeedbackContentKey(int ContentFeedbackKey);
        List<ContentFeedback> GetSeletedContentFeedbackByContentKey(int ContentFeedbackContentKey);
        List<ContentFeedback> GetSelectedContentFeedbackByFeedbackKey(int ContentFeedbackFeedbackKey);
        List<ContentFeedback> GetAllContentFeedback();
        List<ContentFeedbacks> GetSelectedContentFeedbackByContentCode(string ContentCode);

        /// <ContentRating>
        /// 
        /// </ContentRating>
        /// <param name="ContentRatingEntity"></param>
        /// <returns></returns>
        /// What is this one?????????
        //bool Insert(ContentRating ContentRatingEntity);
        bool SaveContentVotesRating(ContentRating ContentRatingEntity);
        List<ContentRating> GetContentRatingByContentKey(int ContentKey);

        /// <ContentStatistics>
        /// 
        /// </ContentStatistics>
        /// <returns></returns>
        List<ContentStatistics> GetAllContentMetaDataWithContentStatistics(int ContentTypeKey);
        List<ContentStatistics> GetAllContentMetaDataWithContentStatistics(string ContentTypeCode);
        ContentStatistics GetSelectedContentMetaDataWithContentStatisticsByContentkey(int ContentKey);
        
        /// <Sys_ErrorLog>
        /// 
        /// </Sys_ErrorLog>
        /// <param name="Sys_ErrorLogEntity"></param>
        /// <returns></returns>
        bool SaveSys_ErrorLogDetails(Sys_ErrorLog Sys_ErrorLogEntity);
        Sys_ErrorLog GetSelectedSys_ErrorLogByErrorLogPrimaryID(int ErrorLogPrimaryID);
        List<Sys_ErrorLog> GetAllSys_ErrorLogDetails();

        /// <ContentBinaryDataContent>
        /// 
        /// </ContentBinaryDataContent>
        /// <param name="ContentBinaryDataContentEntity"></param>
        /// <returns></returns>
        bool SaveContentBinaryData(ContentBinaryDataContent ContentBinaryDataContentEntity);
        //bool UpdateContentBinaryData(ContentBinaryDataContent ContentBinaryDataContentEntity);
        ContentBinaryDataContent GetSelectedContentBinaryDataByKey(int ContentMetaDataKey);

        
    }
}
